#ifndef _C51car_h_
#define _C51car_h_

#include <reg52.h>
#include "LCD.h"


//数据类型重声明

#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint 
#define uint unsigned int
#endif

//功能引脚声明
sbit IN4 = P1^1;//定义右轮
sbit IN3 = P1^2;
sbit ENB = P1^0;//右轮使能，1使用，0不使用

sbit IN2 = P1^3;//定义左轮
sbit IN1 = P1^4;
sbit ENA = P1^5;//左轮使能，1使用，0不使用

sbit BEEP = P2^2;//beep蜂鸣器

sbit BIZHANG_R = P3^7; //右  避障模块
sbit BIZHANG_L = P3^6; //左 

sbit LED_R = P1^6; //右 LED
sbit LED_L = P1^7; //左 LED

sbit XUNJI_R = P3^5;//右 循迹模块 亮低电平无检测黑线，检测到黑线不亮高电平
sbit XUNJI_L = P3^4;//左

sbit KEY = P3^3;//用户按键

sbit MODE_1 = P2^6;//模式选择  01(改变小车左右轮前进转速改变方向）  10（一正一反进行转弯）  11（一正一停进行转弯） 
sbit MODE_2 = P2^7;
sbit BIZHANG_MODE = P2^5; //避障模式选择 0 遇到障碍物停止  1 遇到障碍物先后退然后旋转车身180^o

//电机运行宏定义

#define L_motor_en			ENA = 1     //左轮使能 
#define L_motor_stop 		ENA = 0

#define R_motor_en			ENB = 1     //右轮使能
#define R_motor_stop		ENB = 0

#define L_motor_go  		IN1 =1 ,  IN2 = 0  //左轮前进
#define L_motor_back     	IN1 =0 ,  IN2 = 1  //左轮后退

#define	R_motor_go			IN3 =0 ,  IN4 = 1  //右轮前进
#define	R_motor_back		IN3 =1 ,  IN4 = 0  //右轮后退

//部分全  局变量
uchar L_pwm_val ;  //左电机占空比比值
uchar R_pwm_val ;  //右电机占空比比值
uchar pwm_t    ;	 //周期
//提示音相关数组数据//
unsigned int music[]={100,100,100,100,100};//延音时长
unsigned int count[]={10,50,80,100,150};//频率次数
//函数声明
void forward (uint a ,uint b) ;
void stops ();
void back (uint c,uint d);
void turn_left(uint e ,uint f);
void turn_right(uint g ,uint h);
void turn_left_2(uint i ,uint j);
void turn_right_2(uint k ,uint l)	;
void turn_left_3(uint n);
void turn_right_3(uint m);
void TRACKING(void);
void BIZHANG_MODE_CHOICE(void);
void Timer0_init();
void delay (unsigned int m);
void Delay10ms();
void pulse_BEEP (unsigned int count,unsigned int c,unsigned int d);
void delay_op(unsigned int w);
void BEEP_music(unsigned int *ha ,unsigned int *hei,unsigned int length);
void UART_init(void);
void UART_sendbyte(unsigned char byte);
void Print_ID(void);
void BIGAN_BUTTON(void);

#endif
